The present invention relates in general to computer systems and particularly, to a system for managing an execution of computer programs and a corresponding interface to the system. Further, it relates to a method of implementing the system and associated interfaces.
Distributed processing relates to performing computer processing tasks over multiple computer systems. In distributed processing, each system performs a part of the task to process. Conventional workload management systems favor the distribution of large programs separately among a cooperating group of network nodes. These methods work to optimize the performance of each single application without regard to performance of other programs presently in the system. Additionally, these systems generally require an intervention by a system administrator, user input or advance knowledge of program behavior and/or resource needs, uniform system metrics and/or a homogeneous platform. Thus, it is highly desirable to have a workload management system which avoids all the foregoing requirements. Further, it is highly desirable to have a flexible and adaptable system for sharing heterogeneous network resources to execute computer programs in a timely manner as if they were run alone on a single workstation.
The existing distributed processing methods to cluster workstations rely on hardware or operating system specific tuning information such as number of swapped users, user queue length, and paging sets. Thus, it is also highly desirable to have a distributed processing system which is capable of dynamically generating statistics relating to performance of various platforms and operating systems in an agnostic fashion. At the same time, it is also highly desirable to have additional platforms and workstations that dynamically participate in the cluster.
As a network of workstations grows, it is important to be able to take an advantage of unutilized central processing unit (CPU) resources anywhere in the network. Java, for example, helps code portability by running code in its own Java virtual machine (JVM) that hides the details of the platform from the application program. However, when portable codes are employed, more efficient services which are available on specific systems and platforms often cannot be utilized and thus performance typically becomes degraded when using such codes. For instance, a code such as Java developed to run anywhere may not be able take advantage of unique hardware and/or software features of a specific platform. Therefore, it is highly desirable to have a method and system for enabling an object running in a Java Virtual Machine to uniquely identify its location while remaining similar to other distributed versions of the same object in name and type. It is also desirable to have a work unit take advantage of platform features while remaining truly system agnostic.
Further yet, other existing methods require a systems programmer to update a configuration file which the distribution software reads to learn about which workstation has which special hardware/software features. Moreover, these existing methods require different versions of the same application, for example, one version that runs on operating system A, another version that runs with version B, another version that checks if hardware C is available. Thus, it is highly desirable to have a method and system enabled to perform distributed processing without the need to have special configuration information related to a particular workstation. It is also highly desirable to have such a method and system take advantage of the special configuration information if available. Moreover, it is also highly desirable to have such a method and system run the same copy of an application on any platform/version/operating system.
The present invention is directed to a flexible and adaptable system for sharing heterogeneous network resources to execute computer programs in an efficient and timely manner as if the programs were run alone on a single workstation. The method and system of the present invention is capable of distributing any Java workload. The present invention provides a Java Workload Manager (JWLM), a model for managing distributed heterogeneous network nodes to meet demands for service requests in a timely and efficient manner. Upon receiving a request for service and places, JWLM classifies the request into a particular type of service, places the work on a logical queue to be executed. Routing queues place the work on one of many available nodes in the network ready to process this type of service. The choice of which node to place the work is based on accounting, availability and past performance of all nodes in question. Periodically, changes are made to the system in order to meet demands for service and/or conserve resources.
The JWLM of the present invention is enabled to learn the needs of programs over time, thereby eliminating a need for intervention by a system administrator. Moreover, the method and system of the present invention need not rely on system specific metrics, although the performance metrics may be used in an alternate embodiment.
The present invention also allows objects to be distributed and run on distributed workstations while behaving as if they were initiated locally on the machine on which they run. Objects are typically small pieces of program code that perform some very specific task. For example, a complex application can be built by combining objects. Each object is a stand-alone piece of code that can be combined with other objects by employing one or more interfaces to the object for communicating. Objects may be distributed to different computers and communicate with one another over the network using one or more interfaces to the objects. The work in the present invention is distributed through the cluster of workstations. The work sent to different workstations all have the same class name. At a particular workstation, the class path may hold different implementations of that object. Thus, at dynamic compilation time, if a platform has a more efficient threading package or is capable of taking advantage of a more efficient storage hardware device, the work unit is dynamically compiled with the more efficient feature.
In the present invention, the work unit has the same class name in all the nodes, although their class path implementation may be different. Further, the workload manager software need not know of a special feature a particular workstation may include. The implementation advantages of a workstation are bound to the work unit at dynamic compilation time, allowing for transparency of a distributed system of workstations.
Further features and advantages of the present invention as well as the structure and operation of various embodiments of the present invention are described in detail below with reference to the accompanying drawings. In the drawings, like reference numbers indicate identical or functionally similar elements.